The development and application of rule engines is one branch of Artificial Intelligence (A.I.), which is a very broad research area that focuses on “making computers think like people.” Broadly speaking, a rule engine is a set of one or more software modules running on a computing device (e.g., a server, a personal computer, etc.) that processes information by applying rules to data objects (such as facts). A rule is a logical construct for describing the operations, definitions, conditions, and/or constraints that apply to some predetermined data to achieve a goal. Various types of rule engines have been developed to evaluate and process rules. Conventionally, a rule engine creates a rulebase containing a network (e.g., Rete network) to process rules and data objects. The network may include many different types of nodes, including, for example, root nodes, object-type nodes, alpha nodes, left-input-adapter nodes, beta nodes (e.g., eval nodes, join nodes, not nodes, etc.), and terminal nodes, etc.
To meet the demands of today's business world, more complex applications involving rules, workflow and event processing are developed, where rules, workflow, and event processing may be collectively referred to as business logic. Typically, such complex applications run on separate standalone engines, in addition to the rule engine, with poor integration and totally different approaches, forcing one into a process oriented or rules oriented world.
Furthermore, when testing business logic, tests alone are not ideal because tests do not fully examine the behavior of the business logic.